#ifndef _BLE_TRANSPORT_SVC_H
#define _BLE_TRANSPORT_SVC_H

#include <zephyr/bluetooth/conn.h>
#include <zephyr/types.h>

#define BLE_TRANSPORT_UUID_SERVICE                                                                                     \
    BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0x0000ff01, 0x4c72, 0x4dd5, 0xb86f, 0x412340a15dad))
#define BLE_TRANSPORT_UUID_RX                                                                                          \
    BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0x0000ff02, 0x4c72, 0x4dd5, 0xb86f, 0x412340a15dad))
#define BLE_TRANSPORT_UUID_TX                                                                                          \
    BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0x0000ff03, 0x4c72, 0x4dd5, 0xb86f, 0x412340a15dad))
#define BLE_UUID_TRANSPORT_VAL BT_UUID_128_ENCODE(0x0000ff01, 0x4c72, 0x4dd5, 0xb86f, 0x412340a15dad))

struct ble_transport_cb
{
    void (*received)(struct bt_conn *conn, const uint8_t *const data, uint16_t len);
    void (*ccc_changed)(uint16_t value);
};

int ble_transport_svc_init(struct ble_transport_cb *cb);
int ble_transport_svc_send(struct bt_conn *conn, const uint8_t *data, uint16_t len);

#endif // _BLE_TRANSPORT_SVC_H
